home *** CD-ROM | disk | FTP | other *** search
/ Plug-In Power Pack for Netscape Communicator / Plug-In Power Pack for Netscape Communicator.iso / plugins / dataviews / dvtools / demos / dwpdemo / dwp_model.c < prev    next >
C/C++ Source or Header  |  1997-07-10  |  4KB  |  150 lines

  1. #ifndef lint
  2. static char SccsId[]= "@(#)dwp_model.c    V1.8    3/15/95";
  3. #endif
  4.  
  5.  
  6. /*------------------------------------------------------------------
  7. | file name -- dwp_model.c
  8. |
  9. | functions             Description
  10. | ---------             -----------
  11. | InitApplication       Calls init_data_table() and init_app_model().
  12. |
  13. | init_data_table       Initializes the data table.
  14. |
  15. |-----------------------------------------------------------------*/
  16.  
  17. #include "std.h"
  18. #include "dvstd.h"
  19. #include "dvtools.h"
  20. #include "VOstd.h"
  21. #include "dwp_vars.h"
  22. #include "dwp_data.h"
  23. #include "VOfundecl.h"
  24. #include "VTfundecl.h"
  25. #include "dwp_fundecl.h"
  26.  
  27.  
  28. /***************** Begin Function Declarations *************/
  29. LOCAL  void init_data_table V_P_((void));
  30. /***************** End Function Declarations *************/
  31.  
  32. /*-----------------------------------------------------------------
  33. |
  34. |  InitApplication
  35. |    Performs the initialization needed for the application.
  36. |    Calls init_data_table().
  37. */
  38. void InitApplication 
  39. V_P_ ((void))
  40. {
  41.   /* initialize the real-time name:data look up table */
  42.   init_data_table ();           /* found below */
  43. }
  44.  
  45. /*-----------------------------------------------------------------
  46. |
  47. |   init_data_table
  48. |    Initialize the Data Table.  The Data Table is a symbol table of
  49. |    variable names and their data buffer.  This table is used by
  50. |       DV-Tools to rebind DV-Draw variables to application data.
  51. */
  52. LOCAL void init_data_table 
  53. V_P_ ((void))
  54. {
  55.  
  56.   INT i;
  57.  
  58.   /* Create the symbol table */
  59.   DataTable = VTstcreate ("Data Name and Info", (VTSTCOMPAREFUNPTR)NULL);
  60.  
  61.   /* Make entries for the name buffer pairs defined by DataInfo
  62.   |  in dwp_data.c
  63.   */
  64.   for (i = 0; i < MAX_APP_VARS; i++)
  65.     {
  66.       VTstsninsert (DataTable, StrClone (DataInfo[i].varname),
  67.                     (INT *) & DataInfo[i]);
  68.     }
  69. }
  70.  
  71.  
  72.  
  73.  
  74. /*-----------------------------------------------------------------
  75. |
  76. |  SelectWindow
  77. |       Translate the command into the key for the window.
  78. |
  79. */
  80. void 
  81. SelectWindow (name, number)
  82.      char *name;
  83.      int *number;
  84. {
  85.   if (S_STRCMP (name, "ammonia") == 0)
  86.     *number = AMMONIA;
  87.   else if (S_STRCMP (name, "hp_drum_detail") == 0)
  88.     *number = HP_DRUM;
  89.   else if (S_STRCMP (name, "lp_drum_detail") == 0)
  90.     *number = LP_DRUM;
  91.   else if (S_STRCMP (name, "help") == 0)
  92.     *number = HELP;
  93.   else if (S_STRCMP (name, "legend") == 0)
  94.     *number = LEGEND;
  95.   else if (S_STRCMP (name, "ammonia") == 0)
  96.     *number = AMMONIA;
  97.   else if (S_STRNCMP (name, "Valve", 5) == 0)
  98.     {
  99.       *number = HAND;
  100.       whichvalve = S_ATOI (&name[5]);
  101.     }
  102. }
  103.  
  104.  
  105. /*-----------------------------------------------------------------
  106. |
  107. |  DoCommand
  108. |       Execute the command that is associated with the picked
  109. |       object.
  110. |
  111. */
  112. void 
  113. DoCommand (name)
  114.      char *name;
  115. {
  116.   if (S_STRCMP (name, "apply") == 0)
  117.     change_valve ();
  118.   else if (S_STRCMP (name, "reset") == 0)
  119.     reset ();
  120.   else if (S_STRCMP (name, "toggle_overlay") == 0)
  121.     toggle_overlay = (toggle_overlay) ? (FLOAT)0.0 : (FLOAT)1.0;
  122. }
  123.  
  124. /*==================================================================
  125. |
  126. |    StrClone
  127. |       Allocates space for and makes a copy of a specified string,
  128. |       returning a pointer to the string.  If there is no input
  129. |       string, the routine returns a NULL.
  130. */
  131. CHAR *StrClone( str )
  132.   CHAR *str;
  133.   {
  134.   FAST INT len;
  135.   CHAR *newstr;
  136.   FAST CHAR *to;
  137.   FAST CHAR *from;
  138.  
  139.   if( str == NULL )
  140.     return( NULL );
  141.   len = S_STRLEN( str ) + 1;
  142.   newstr = (CHAR *)S_ALLOC( len );
  143.   if( newstr )
  144.     for( to = newstr, from = str; len > 0; len-- )
  145.       *to++ = *from++;
  146.   return( newstr );
  147.   }
  148.  
  149.  
  150.